package com.liangtian.mdm.dm.listener;

// import com.liangtian.mdm.activiti.busi2proc.dao.BusinessProcdefDao;
// import com.liangtian.mdm.activiti.busi2proc.model.BusinessProcdef;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class InitCacheListener implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        String path = arg0.getServletContext().getContextPath();
        System.out.println("--------ContextDestroyed----------" + path);
    }

    // @Override
//     public void contextInitialized(ServletContextEvent arg0) {
//         ServletContext sc = arg0.getServletContext();
//         String path = sc.getContextPath();
//         sc.setAttribute("basePath", path);
//         System.out.println("--------ContextInitialized----------" + path);
//
//         System.out.println("--------sysParameter init----------");
//         SysParameters.getInstance().init();
//
// //        InputStream is = GlobalInterceptor.class.getClassLoader().getResourceAsStream("config.properties");
// //        Properties props = new Properties();
// //        try {
// //        	props.load(is);
// //        } catch (IOException e) {
// //            e.printStackTrace();
// //    		System.out.println("--------config未设置img路径----------");
// //        }
// //        String imgPath = props.getProperty("imgPath");
//         sc.setAttribute("imgPath", path);
//
//         WebApplicationContext wac =
//                 WebApplicationContextUtils.getRequiredWebApplicationContext(sc);
//
//         //--edit by wangyk at 180517:查询首页logo和favorite，不同项目的logo可能不一样
//         SysIconDao sysIconDao = (SysIconDao) wac.getBean("sysIconDao");
//         Map<String, Object> cond = new HashMap<>();
//         cond.put("type", "logo");
//         List<SysIcon> logoList = sysIconDao.queryIconListByCond(cond);
//         if (!logoList.isEmpty())
//             sc.setAttribute("logo", logoList.get(0).getIcon());
//         else
//             sc.setAttribute("logo", "pcitc_log.jpg");
//         cond.clear();
//
//         //--edit by wangyk at 180528:查询系统参数systemCode，并put到application范围内
//         SysParameterDao sysParameterDao = (SysParameterDao) wac.getBean("sysParameterDao");
//         String paramValue = sysParameterDao.getSysParamValue("systemCode");
//         if (null == paramValue || paramValue.equalsIgnoreCase(""))
//             sc.setAttribute("systemCode", "MDM");
//         else
//             sc.setAttribute("systemCode", paramValue);
//
//         cond.put("isTableCreate", "1");
//         cond.put("status", "0");
//         ModelDao modelDao = (ModelDao) wac.getBean("modelDao");
//         // 查询出已建模的模型
//         List<Model> modelList = modelDao.queryAllModelListByCondition(cond);
//         for (Model m : modelList) {
//             Ehcache.getCache().getModelCache().put(m.getId(), m);
//         }
//
//         AttrConfigDao attrConfigDao = (AttrConfigDao) wac.getBean("attrConfigDao");
//         // 查询所有已建模的业务属性(queryAttributeListStart)
//         List<AttrConfig> attrList = attrConfigDao.queryValidAttributeList(null);
//         if (attrList != null && !attrList.isEmpty()) {
//             Map<String, List<AttrConfig>> modelMap = GroupUtil.groupOrder(attrList, new GroupUtil.GroupBy<String>() {
//                 @Override
//                 public String groupby(Object obj) {
//                     AttrConfig afg = (AttrConfig) obj;
//                     return afg.getModelId();
//                 }
//             });
//             for (String modelId : modelMap.keySet()) {
//                 //Ehcache.attrConfigCache.put(modelId, modelMap.get(modelId));
//                 List<AttrConfig> lm = modelMap.get(modelId);
// //				HashMap<String, AttrConfig> ma = new HashMap<>();
//                 LinkedHashMap<String, AttrConfig> ma = new LinkedHashMap<>();
//                 for (AttrConfig ac : lm) {
//                     ma.put(ac.getAttrColumn(), ac);
//                 }
//                 //Collection<AttrConfig> list = ma.values();
//                 Ehcache.getCache().getAttrConfigCache().put(modelId, ma);
//             }
//         }
//
// //		AttrGroupDao attrGroupDao = (AttrGroupDao) wac.getBean("attrGroupDao");
// //		// 查询所有已建模的属性组
// //		List<AttrGroup> groupsList = attrGroupDao.queryValidGroupList(null);
// //		if(groupsList!=null && !groupsList.isEmpty()){
// //			Map<String, List<AttrGroup>> groupMap = GroupUtil.groupOrder(groupsList, new GroupUtil.GroupBy<String>(){
// //				@Override
// //				public String groupby(Object obj) {
// //					AttrGroup afg = (AttrGroup) obj;
// //					return afg.getModelId();
// //				}
// //			});
// //			for(String modelId : groupMap.keySet()){
// //				Ehcache.groupsCache.put(modelId, (ArrayList) groupMap.get(modelId));
// //			}
// //		}
//
//         //缓存流程及用户任务信息
//         Cache<String, ArrayList> wfTaskCache = Ehcache.getCache().getWfTaskCache();
//         BusinessProcdefDao businessProcdefDao = (BusinessProcdefDao) wac.getBean("businessProcdefDao");
//         RepositoryService repositoryService = (RepositoryService) wac.getBean("repositoryService");
// //		BusinessProcdefService businessProcdefService = (BusinessProcdefService) wac.getBean("businessProcdefService");
//         Map map = new HashMap<>();
//         map.put("status", "0"); //只查询出状态是活动的
//         List<BusinessProcdef> bpList = businessProcdefDao.queryBusinessProcdefBySurvey(map);
//         for (BusinessProcdef bp : bpList) {
//             String processDefineId = bp.getProcdefId();
//             if (wfTaskCache.containsKey(processDefineId))
//                 continue;
//             else {
//                 BpmnModel bpmn = repositoryService.getBpmnModel(processDefineId);
//                 Collection<FlowElement> flows = bpmn.getMainProcess().getFlowElements();
//                 ArrayList<UserTask> userTasks = new ArrayList<>();
//                 for (FlowElement ele : flows) {
//                     if (ele.getClass().getName().equals("org.activiti.bpmn.model.UserTask")) {
//                         UserTask userTask = (UserTask) ele;
// //						CustomTask task = new CustomTask();
// //						task.setUserTask(userTask);
// //						List<SysUser> users= businessProcdefService.getTaskCandidateUsers(bp.getId(), userTask.getId());
// //						task.setUserList(users);
// //						userTasks.add(task);
//                         userTasks.add(userTask);
//                     }
//                 }
//                 wfTaskCache.put(processDefineId, userTasks);
//             }
//         }
//
//     }

}
